/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.secretaria.saude.dominio;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 *
 * @author pablo
 */
@Entity
@Table(name = "procedimento_gaia")
public class ProcedimentoGaia implements Serializable, Comparable<ProcedimentoGaia>{
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    /*Dados do procedimento*/

    @Column
    private Long codigoGrupo;

    @Column
    private String descricaoGrupo;

    @Column
    private Long codigoSubGrupo;

    @Column
    private String descricaoSubGrupo;

    @Column
    private Long codigoFormaOrganizacao;

    @Column
    private String descricaoFormaOrganizacao;

    @Column
    private Long codigoProcedimento;

    @Column
    private String descricaoProcedimento;

    public ProcedimentoGaia(Long codigoGrupo, String descricaoGrupo, Long codigoSubGrupo, String descricaoSubGrupo, Long codigoFormaOrganizacao, String descricaoFormaOrganizacao, Long codigoProcedimento, String descricaoProcedimento) {
        this.codigoGrupo = codigoGrupo;
        this.descricaoGrupo = descricaoGrupo;
        this.codigoSubGrupo = codigoSubGrupo;
        this.descricaoSubGrupo = descricaoSubGrupo;
        this.codigoFormaOrganizacao = codigoFormaOrganizacao;
        this.descricaoFormaOrganizacao = descricaoFormaOrganizacao;
        this.codigoProcedimento = codigoProcedimento;
        this.descricaoProcedimento = descricaoProcedimento;
    }

    public ProcedimentoGaia() {
    }

    public Long getCodigoFormaOrganizacao() {
        return codigoFormaOrganizacao;
    }

    public void setCodigoFormaOrganizacao(Long codigoFormaOrganizacao) {
        this.codigoFormaOrganizacao = codigoFormaOrganizacao;
    }

    public Long getCodigoGrupo() {
        return codigoGrupo;
    }

    public void setCodigoGrupo(Long codigoGrupo) {
        this.codigoGrupo = codigoGrupo;
    }

    public Long getCodigoProcedimento() {
        return codigoProcedimento;
    }

    public void setCodigoProcedimento(Long codigoProcedimento) {
        this.codigoProcedimento = codigoProcedimento;
    }

    public Long getCodigoSubGrupo() {
        return codigoSubGrupo;
    }

    public void setCodigoSubGrupo(Long codigoSubGrupo) {
        this.codigoSubGrupo = codigoSubGrupo;
    }

    public String getDescricaoFormaOrganizacao() {
        return descricaoFormaOrganizacao;
    }

    public void setDescricaoFormaOrganizacao(String descricaoFormaOrganizacao) {
        this.descricaoFormaOrganizacao = descricaoFormaOrganizacao;
    }

    public String getDescricaoGrupo() {
        return descricaoGrupo;
    }

    public void setDescricaoGrupo(String descricaoGrupo) {
        this.descricaoGrupo = descricaoGrupo;
    }

    public String getDescricaoProcedimento() {
        return descricaoProcedimento;
    }

    public void setDescricaoProcedimento(String descricaoProcedimento) {
        this.descricaoProcedimento = descricaoProcedimento;
    }

    public String getDescricaoSubGrupo() {
        return descricaoSubGrupo;
    }

    public void setDescricaoSubGrupo(String descricaoSubGrupo) {
        this.descricaoSubGrupo = descricaoSubGrupo;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final ProcedimentoGaia other = (ProcedimentoGaia) obj;
        if (this.codigoProcedimento != other.codigoProcedimento && (this.codigoProcedimento == null || !this.codigoProcedimento.equals(other.codigoProcedimento))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 97 * hash + (this.codigoProcedimento != null ? this.codigoProcedimento.hashCode() : 0);
        return hash;
    }

    

    @Override
    public String toString() {
        String codigoProcedimento1 = getCodigoProcedimento() != null ? getCodigoProcedimento().toString() : "";
        String descricaoProcedimento1 = getDescricaoProcedimento() != null ? getDescricaoProcedimento() : "" ;
        return  codigoProcedimento1 + "-" + descricaoProcedimento1;
    }

    @Override
    public int compareTo(ProcedimentoGaia o) {
        if(this.getDescricaoProcedimento() != null && o.getDescricaoProcedimento() != null) {
            return this.getDescricaoProcedimento().compareTo(o.getDescricaoProcedimento());
        }

        return 0;
    }
    
    
}
